go 接口(interface)

/* 定义接口 */
type interface_name interface {
   method1 [return_type]
   method2 [return_type]
   method3 [return_type]
   ...
   methodn [return_type]
}

/* 定义结构体 */
type 结构名 struct {
   /* variables */
}

/* 实现接口方法 */
func (结构变量 结构名) method1() [return_type] {
   /* 方法实现 */
}

func (结构变量 结构名) methodn() [return_type] {
   /* 方法实现*/
}

代码实例:

package main

import "fmt"

type Shape interface {
    area() float64
}

type Rectangle struct {
    width  float64
    height float64
}

func (r Rectangle) area() float64 {
    return r.width * r.height
}

type Circle struct {
    radius float64
}

func (c Circle) area() float64 {
    return 3.14 * c.radius * c.radius
}

func main() {
    var s Shape

    s = Rectangle{width: 10, height: 5}
    fmt.Printf("矩形面积: %f\n", s.area())

    s = Circle{radius: 3}
    fmt.Printf("圆形面积: %f\n", s.area())
}